using System;
using System.Collections;
using System.Collections.Generic;
using Me.Prettyprint.Hector.Api.Beans;

namespace Me.Prettyprint.Hector.Api.Query
{
    /// <summary>
    /// A query wrapper for the call multiget_slice for subcolumns  of supercolumns
    /// </summary>
    /// <typeparam name="K"></typeparam>
    /// <typeparam name="SN"></typeparam>
    /// <typeparam name="N"></typeparam>
    /// <typeparam name="V"></typeparam>
	public interface MultigetSubSliceQuery<K,SN,N,V> : Query<Rows<K,N,V>>
	{ 
        /// <summary>
        /// Set the keys to query
        /// </summary>
        /// <param name="keys"></param>
        /// <returns></returns>
        MultigetSubSliceQuery<K,SN,N,V> SetKeys(List<K> keys);
        /// <summary>
        /// Set the supercolumn to run the slice query on
        /// </summary>
        /// <param name="superColumn"></param>
        /// <returns></returns>
        MultigetSubSliceQuery<K,SN,N,V> SetSuperColumn(SN superColumn);
        /// <summary>
        /// the name of the column family
        /// </summary>
        /// <param name="cf"></param>
        /// <returns></returns>
        MultigetSubSliceQuery<K,SN,N,V> SetColumnFamily(string cf);
        MultigetSubSliceQuery<K,SN,N,V> SetRange(N start, N finish, bool reversed, int count);
        List<N> ColumnNames
        {
            get;
        }
        MultigetSubSliceQuery<K, SN, N, V> SetColumnNames(List<N> columnNames);
	}
}